home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / asm / games / spritegrabber / grabber / routines.s < prev    next >
Text File  |  1980-01-03  |  9KB  |  424 lines

  1. exit_grabber
  2.     bsr    do_icon
  3.     move.w    #1,exit_proggy
  4. return    rts
  5. ;---------------------------------------------
  6. load_iff    bsr    do_icon
  7.     lea    loadifftxt,a0
  8.     lea    do_iff_file,a1
  9.     lea    iffonlytxt,a2
  10.     bsr    load_file
  11.     rts
  12. ;---------------------------------------------
  13. do_iff_file
  14.     bsr    free_iff_file
  15.     bsr    free_mask_screen
  16.     move.l    file_address,iff_address
  17.     move.l    file_length,iff_length
  18.     bsr    check_iff_lbm_file
  19.     tst.w    status_mode
  20.     bne.s    .out
  21.     bsr    get_iff_size
  22.     tst.w    status_mode
  23.     bne.s    .out
  24.     bsr    decode_iff
  25.     bsr    checkflags
  26.     bsr    set_iff_screen
  27.     bsr    do_iff_palette
  28.     bsr    create_iff_table
  29.     bsr    create_mask_screen
  30.     bsr    alloc_palette
  31.     bsr    print_screen_size
  32.     bsr    init_grab_box
  33.     move.l    #0,screenXpos
  34.     move.l    #0,screenYpos
  35.     bsr    set_iff_screen
  36.     add.w    #1,iff_number
  37. .out    rts
  38. ;---------------------------------------------
  39. mouse_box    tst.w    box_start
  40.     bne    .next_part
  41.     btst    #6,$bfe001
  42.     bne    .out
  43.  
  44.     moveq.l    #0,d0
  45.     move.b    ypos,d0
  46.     cmp.w    #200,d0
  47.     bge    .out
  48.  
  49.     move.w    xpos,d0
  50.     moveq.l    #0,d1
  51.     move.b    ypos,d1
  52.     move.w    d0,box_x
  53.     move.w    d1,box_y
  54.     addq.w    #2,d0
  55.     addq.w    #2,d1
  56.     move.w    d0,box_x1
  57.     move.w    d1,box_y1
  58.     bsr    draw_grab_box
  59.     move.w    #1,box_start
  60. .out    bra    .right
  61.  
  62. .next_part    btst    #6,$Bfe001
  63.     bne.s    .out2
  64.     moveq.l    #0,d0
  65.     move.b    ypos,d0
  66.     cmp.w    #200,d0
  67.     bgt.s    .out1
  68.     move.w    xpos,d0
  69.     moveq.l    #0,d1
  70.     move.b    ypos,d1
  71.     sub.w    #1,d0
  72.     sub.w    #1,d1
  73.     cmp.w    box_x,d0
  74.     ble.s    .out1
  75.     cmp.w    box_y,d1
  76.     ble.s    .out1
  77.     add.w    #1,d0
  78.     add.w    #1,d1
  79.     move.w    d0,box_x1
  80.     move.w    d1,box_y1
  81.     bsr    draw_grab_box    
  82. .out1    rts
  83. .out2    bsr    draw_grab_box
  84.     move.w    #0,box_start
  85.     move.w    #0,status_mode
  86.     bsr    do_box_check
  87.     bsr    do_status            
  88.     tst.w    status_mode
  89.     bne.s    .outy
  90. .right    bsr    check_rightmouse
  91. .outy    rts
  92. ;---------------------------------------------
  93. mouse_detection
  94.     bsr    do_mouse_detect
  95.     bsr    check_rightmouse
  96.     rts
  97. ;---------------------------------------------
  98. check_rightmouse
  99.     btst    #10,$dff016
  100.     beq.s    .okay
  101.     rts
  102. .okay    btst    #10,$dff016
  103.     beq.s    .okay
  104.     cmp.w    #1,box_on
  105.     beq.s    .cut
  106.     rts
  107. .cut
  108. grab_spritey
  109.     bsr    alloc_cut_sprite
  110.     tst.l    d7
  111.     bmi.s    .error
  112.     bsr    undraw_grab_box
  113.     bsr    grab_sprite 
  114.     add.w    #1,sprite_amount
  115.     bsr    print_sprite_amount
  116.     move.w    #14,status_mode
  117. ;;    bsr    draw_grab_box
  118. .error    bsr    waitframe
  119.     bsr    do_status
  120.     rts
  121. ;---------------------------------------------
  122. screen_proc
  123.     moveq.l    #0,d0
  124.     move.b    keycode,d0
  125. .movescreendown
  126.     cmp.b    #'d',d0
  127.     bne.s    .movescreenup
  128.     move.l    iff_height,d0
  129.     sub.l    #198,d0
  130.     bmi.s    .out
  131.     beq.s    .out
  132.     move.l    iff_height,d0
  133.     subq.l    #1,d0
  134.     move.l    screenYpos,d1
  135.     add.l    #198,d1
  136.     sub.l    d1,d0 
  137.     bmi.s    .out
  138.     add.l    #1,screenYpos
  139.     bsr    set_iff_screen
  140. .out    rts
  141. ;---------------------------------------------
  142. .movescreenup
  143.     cmp.b    #'a',d0
  144.     bne.s    .movescreenright
  145.     cmp.l    #0,screenYpos
  146.     beq.s    .out2
  147.     sub.l    #1,screenYpos
  148.     bsr    set_iff_screen
  149. .out2    rts
  150. ;---------------------------------------------
  151. .movescreenright
  152.     cmp.b    #'c',d0
  153.     bne.s    .movescreenleft
  154.     move.l    iff_width,d0
  155.     sub.l    #40,d0
  156.     move.l    screenXpos,d1
  157.     sub.l    d1,d0
  158.     bmi.s    .out3
  159.     beq.s    .out3
  160.     addq.l    #2,d1
  161.     move.l    d1,screenXpos
  162.     bsr    set_iff_screen        
  163. .out3    rts
  164. ;---------------------------------------------
  165. .movescreenleft
  166.     cmp.b    #'b',d0
  167.     bne.s    .out4
  168.     cmp.l    #0,screenXpos
  169.     beq.s    .out4
  170.     subq.l    #2,screenXpos
  171.     bsr    set_iff_screen
  172. .out4    rts
  173. ;---------------------------------------------
  174. edit_sprites_routine
  175.     bsr    do_icon
  176.     bsr    set_edit_menu
  177.     rts
  178. ;---------------------------------------------
  179. save_generic_sprites
  180.     bsr    do_icon
  181.     lea    save_generic_txt,a0
  182.     lea    save_gensprites,a1
  183.     lea    genonlytxt,a2
  184.     bsr    save_file
  185.     rts
  186. ;---------------------------------------------
  187. grab_sprite_routine
  188.     bsr    do_icon
  189.     bsr    grab_spritey
  190.     rts
  191. ;---------------------------------------------
  192. delete_sprite_routine
  193.     bsr    do_icon
  194.     bsr    undraw_grab_box
  195.     bsr    reprint_sprite
  196. ;;    bsr    draw_grab_box    
  197.     bsr    do_status
  198.     bsr    print_sprite_amount
  199.     rts
  200. ;---------------------------------------------
  201. print_avail_memory
  202.     moveq.l    #0,d0
  203.     move.l    #$00002,d1
  204.     LIB    availmem,exec
  205.     move.l    d0,chipmem
  206.     moveq.l    #0,d0
  207.     move.l    #$00004,d1
  208.     LIB    availmem,exec
  209.     move.l    d0,fastmem
  210.  
  211.     move.l    #1,tcol
  212.     move.l    #25,d0
  213.     move.l    #38,d1
  214.     move.l    chipmem,d2
  215.     moveq.l    #8,d3
  216.     bsr    dec_print
  217.     move.l    #25,d0
  218.     move.l    #46,d1
  219.     move.l    fastmem,d2
  220.     moveq.l    #8,d3
  221.     bsr    dec_print
  222.     rts
  223. ;---------------------------------------------
  224. exit_palette_editor
  225.     bsr    do_icon
  226.     bsr    set_edit_menu
  227.     rts
  228. ;---------------------------------------------
  229. exit_editor_routine
  230.     bsr    do_icon
  231.     bsr    set_main_menu
  232.     rts
  233. ;---------------------------------------------
  234. load_generic_sprites
  235.     bsr    do_icon
  236.     move.l    #loadgentxt,filefix1
  237.     move.l    #genonlytxt,a0
  238.     bsr    copy_reqshow
  239.     bsr    do_blank_status
  240.     bsr    reset_system
  241.     move.w    #FRQABSOLUTEXYM!FRQLOADINGM,loadsave
  242.     lea    Filereq,a0
  243.     LIB    filerequester,req
  244.     tst.l    d0
  245.     beq    .error
  246.     move.w    #0,status_mode    
  247.     bsr    load_stuff
  248. ;---------------------------------------------
  249.     move.l    #4,file_length        ; check header of file
  250.     move.l    #testhead,file_address
  251.     bsr    read_stuff2
  252.     cmp.l    #'TOSH',testhead
  253.     bne    .error2        
  254. ;---------------------------------------------
  255.     bsr    free_palettelist_generic    ; free old sprites palettes
  256.     bsr    free_sprite_list_generic
  257. ;---------------------------------------------
  258.     move.l    #4,file_length        ; get sprite palettes
  259.     move.l    #genstuff,file_address    ; from gen
  260.     bsr    read_stuff2
  261.     move.w    genstuff,sprite_amount
  262.     move.w    genstuff+2,palettes
  263. ;---------------------------------------------
  264.     moveq.l    #0,d0            ; alloc temp gen header
  265.     move.w    sprite_amount,d0
  266.     lsl.w    #2,d0
  267.     move.l    d0,genlength
  268.     move.l    #$10001,d1
  269.     LIB    allocmem,exec
  270.     move.l    d0,genaddress
  271.     move.l    genlength,file_length
  272.     move.l    genaddress,file_address
  273.     bsr    read_stuff2
  274. ;---------------------------------------------
  275.     move.w    palettes,d7
  276.     subq.w    #1,d7
  277.     bmi.s    .nopals
  278. .loop    move.l    d7,-(sp)
  279.     bsr    find_free_palettelist
  280.     movem.l    (sp)+,d7
  281.     move.l    #$300,d0
  282.     move.l    #$10001,d1
  283.     LIB    allocmem,exec
  284.     move.l    d0,(a6)
  285.     move.l    #-1,4(a6)
  286.     move.l    d0,file_address
  287.     move.l    #$300,file_length
  288.     movem.l    d0-d7/a0-a6,-(sp)
  289.     bsr    read_stuff2
  290.     movem.l    (sp)+,d0-d7/a0-a6    
  291.     dbra    d7,.loop
  292. ;---------------------------------------------
  293. .nopals    move.w    sprite_amount,d7
  294.     subq.w    #1,d7
  295.     bmi.s    .nospr
  296.     move.l    genaddress,a5
  297.  
  298. .loop1    move.l    d7,-(sp)
  299.     bsr    find_free_spritelist        
  300.     move.l    d7,d6
  301.     move.l    (sp)+,d7
  302.     tst.l    d6
  303.     bmi    .error3
  304.     move.l    (a5)+,d0
  305.     move.l    d0,file_length
  306.     move.l    #$10001,d1
  307.     LIB    allocmem,exec
  308.     move.l    d0,file_address
  309.     move.l    d0,(a6)
  310.     move.l    #-1,4(a6)
  311.     movem.l    d0-d7/a0-a6,-(sp)
  312.     bsr    read_stuff2
  313.     movem.l    (sp)+,d0-d7/a0-a6
  314.     dbra    d7,.loop1        
  315. ;---------------------------------------------
  316. .error3    
  317. .nospr    move.l    genaddress,a1        ; free gen header
  318.     move.l    genlength,d0
  319.     LIB    freemem,exec
  320.  
  321.     bsr    close_stuff
  322.     bra.s    .take
  323. ;---------------------------------------------
  324. .error2    move.w    #20,status_mode        ; not a gen file
  325.     bsr    close_stuff
  326.     bra.s    .take
  327. .error    move.w    #1,status_mode        ; no file selected
  328. ;---------------------------------------------
  329. .take    bsr    do_status
  330.     bsr    takeback_system
  331.     move.w    #0,actual_edit
  332.     move.l    palette_list,a0
  333.     move.l    (a0),a0
  334.     bsr    do_palette
  335.     move.w    #0,editA
  336.     bsr    print_editor_sprites
  337.     rts
  338. testhead    dc.b    0,0,0,0,0,0
  339. genstuff    dc.l    0,0
  340. ;---------------------------------------------
  341. save_new_sprites
  342.     bsr    do_icon
  343.     bsr    save_new_sprites_routine
  344.  
  345.     cmp.w    #6,gfxmode
  346.     bge.s    .sat    
  347.     lea    spronlytxt,a2
  348.     bra    save_file
  349. .sat    lea    satonlytxt,a2
  350.     bra    save_file_mode
  351.  
  352. satonlytxt    dc.b    '#?',0
  353.         even
  354. ;---------------------------------------------
  355. save_new_sprites_routine
  356.     move.w    gfxmode,d0
  357.     lea    save_modes_table,a1
  358.     lea    save_modes_text,a0
  359.     move.l    (a0,d0.w*4),a0
  360.     move.l    (a1,d0.w*4),a1
  361.     rts
  362.  
  363. save_modes_text
  364.     dc.l    save_amiga_planes_txt
  365.     dc.l    save_amiga_interleaved_txt
  366.     dc.l    save_copper_txt
  367.     dc.l    save_pixel_txt
  368.     dc.l    save_genesis_txt
  369.     dc.l    save_genesis_txt2
  370.     dc.l    save_saturn_256_txt
  371.     dc.l    save_saturn_128_txt
  372.     dc.l    save_saturn_64_txt
  373.     dc.l    save_saturn_16_txt
  374.     dc.l    save_saturn_bgr_txt
  375.     dc.l    Save_Saturn_Chr8_txt
  376.     dc.l    Save_Saturn_Chr16_txt
  377.  
  378. save_modes_table
  379.     dc.l    save_amiga_plane_format        ; planes
  380.     dc.l    save_amiga_interleaved_format    ; interleaved
  381.     dc.l    save_amiga_copper_format    ; copper
  382.     dc.l    save_bytepixel_format        ; byte pixel
  383.     dc.l    create_genesis_file_nocr    ; genesis
  384.     dc.l    create_genesis_file        ; genesis crunched
  385.     dc.l    save_saturn_256
  386.     dc.l    save_saturn_128
  387.     dc.l    save_saturn_64
  388.     dc.l    save_saturn_16
  389.     dc.l    save_saturn_bgr
  390.     dc.l    Save_Saturn_Chr8
  391.     dc.l    Save_Saturn_Chr16
  392. ;---------------------------------------------
  393. remap_sprites
  394.     bsr    do_icon
  395.     bsr    create_colour_table
  396.     move.w    #-2,remap_pal2
  397.     move.l    sprite_list,a6
  398. .loop    cmp.l    #-1,(a6)
  399.     beq    .out
  400.     move.l    (a6),a1
  401.     cmp.w    #1,spr_mode(a1)
  402.     bne    .next
  403.     move.w    spr_palette(a1),d0
  404.     cmp.w    #-1,d0
  405.     beq    .next
  406.     move.w    d0,remap_palette
  407.     move.w    #25,status_mode
  408.     bsr    do_status
  409.     bsr    find_remap_colour_table
  410.     bsr    remap_sprite_gfx
  411.     move.w    #-1,spr_palette(a1)
  412. .next    addq.l    #4,a6
  413.     bra    .loop
  414. .out    move.w    #0,status_mode
  415.     bsr    do_status
  416.     bsr    print_editor_sprites    
  417.     rts
  418. ;---------------------------------------------
  419. edit_palettes
  420.     bsr    do_icon
  421.     bsr    set_palette_menu
  422.     rts
  423. ;---------------------------------------------
  424.